import {
  ExecutionContext,
  SetMetadata,
  createParamDecorator,
} from '@nestjs/common';
// 自定义装饰器
// 装饰器其实就是一个函数，获取调用者传过来的值，然后返回一个对应方法并且调用，
export const Decorator = (...args) => {
  // 这里封装了一个SetMetadata定义元数据的方法
  console.log('args', args);
  return SetMetadata('role', args);
};

// 自定义装饰器：返回接口的请求url
export const ReqUrl = createParamDecorator(
  // data,调用传过来的参数
  // ctx，无需传递，就是调用者的上下文
  (data: string, ctx: ExecutionContext) => {
    // 获取请求参数
    const req = ctx.switchToHttp().getRequest<Request>();
    console.log('data---------------', data);
    // 返回请求参数的url
    return req.url;
  },
);
